/**
 * This file is Copyright © 2008 Software Craftsmen Limited. All Rights Reserved.
 */
package com.softwarecraftsmen.collections.maps;

import com.softwarecraftsmen.collections.Key;
import com.softwarecraftsmen.collections.Sequence;
import com.softwarecraftsmen.functors.Boolean;
import org.jetbrains.annotations.NotNull;

public interface MultiMap<K extends Key, V> extends Map<K, Sequence<Integer, V, ?>>
{
	@NotNull
	V valueAt(final @NotNull K key, final @NotNull Integer index);

	@NotNull
	Boolean isEmpty(final @NotNull K key);

	@NotNull
	Boolean hasElements(final @NotNull K key);

	int size(final @NotNull K key);

	@NotNull
	Boolean contains(final @NotNull K key, final @NotNull Integer index);

	@NotNull
	com.softwarecraftsmen.functors.Boolean doesNotContain(final @NotNull K key, final @NotNull Integer index);
}
